package subraSoft.centaurus.gui.util;

import java.util.Date;

import javax.swing.JTextField;
import javax.swing.text.JTextComponent;

import subraSoft.centaurus.gui.components.CenDateCheckBox;

/**
 * Clase utilitaria para setear y obtener tipos basicos en componentes
 * de texto.
 *  
 * @author christian
 *
 */
public class CenComponentValueUtil
{

	/**
	 * Obtiene un long del componente de texto.
	 * 
	 * @param field componente
	 * @return el long que contiene o null si no es posible.
	 */
	public static Long getLong(JTextComponent field)
	{
		if(field.getText() != null && !field.getText().isEmpty())
		{
			return Long.parseLong(field.getText());
		}
		return null;
	}
	
	/**
	 * Obtiene un integer del componente de texto.
	 * 
	 * @param field componente
	 * @return el numero que contiene o null si no es valido.
	 */	
	public static Integer getInteger(JTextComponent field)
	{
		if(field.getText() != null && !field.getText().isEmpty())
		{
			return Integer.parseInt(field.getText());
		}
		return null;
	}
	
	/**
	 * Obtiene un string del componente de texto.
	 * 
	 * @param field componente
	 * @return el string que contiene o null si es vacio.
	 */	
	public static String getString(JTextComponent field) {
		if(field.getText() != null && !field.getText().isEmpty())
		{
			return field.getText();
		}
		return null;
	}
	
	/**
	 * Setea al componente el valor pasado como parametro. 
	 *  
	 * @param field campo
	 * @param value valor
	 */
	public static void set(JTextComponent field, String value)
	{
		field.setText(value);
	}
	
	/**
	 * Setea al componente el valor pasado como parametro. 
	 *  
	 * @param field campo
	 * @param value valor
	 */
	public static void set(JTextComponent field, Long value)
	{
		if(value != null)
			field.setText(Long.toString(value));
		else
			field.setText(null);
	}

	/**
	 * Setea al componente el valor pasado como parametro. 
	 *  
	 * @param field campo
	 * @param value valor
	 */
	public static void set(CenDateCheckBox field, Date date) {
		if(date != null)
			field.setDate(date);
		else
			field.setDate(null);
	}

	/**
	 * Setea al componente el valor pasado como parametro. 
	 *  
	 * @param field campo
	 * @param value valor
	 */
	public static void set(JTextField field, Double value) {
		if(value != null)
			field.setText(Double.toString(value));
		else
			field.setText(null);
	}

	/**
	 * Setea al componente el valor pasado como parametro. 
	 *  
	 * @param field campo
	 * @param value valor
	 */
	public static Double getDouble(JTextField field) {
		if(field.getText() != null && !field.getText().isEmpty())
		{
			return Double.parseDouble(field.getText());
		}
		return null;
	}
}
